#!/usr/bin/python3
# -*- coding:utf-8 -*-
""""
   @Author: 即将拥有人鱼线的yjw
   @Time: 2024/12/6 16:09
   @File: autoParsing.py
   @desc:
"""
import re


def get_user_info(keyword):
    keyword = keyword.strip()
    if not keyword:
        raise ValueError(f"请输入造数描述")
    result_list = re.split(r'[;；]', keyword)

    # 去除可能存在的空字符串
    result_list = [item for item in result_list if item]
    print(result_list)

    dict_entries = {
        '个人客户':'',
        '机构客户':'',
        '产品客户':'',
        '基金账户':'',
        '基金交易':'',
        '账户流水':'',
    }
    for item in result_list:
        index = item.find(':')
        if index == -1:
            index = item.find('：')
        key = item[:index].strip()
        value = item[index + 1:].strip()
        if value.isdigit():
            dict_entries.update({key:value})
        else:
            value_list = formatter(value)
            dict_entries.update({key:value_list})
    #print(dict_entries)
    return dict_entries




def formatter(keyword):
    '''
    格式化字符串
    :param text:
    :return:
    '''
    result = re.split(r'[,，]', keyword)
    dict_entries = {}
    for text in result:
        # 查找分隔符的位置
        index = text.find('为')
        if index == -1:
            return {}  # 如果没有找到分隔符，返回空字典
        # 提取键和值，并去除可能存在的多余空格
        key = text[:index].strip()
        value = text[index + len('为'):].strip()
        # 格式化值
        if value.lower() == '空':
            value = ''
        elif value.endswith(('w', 'W','万')):
            try:
                numeric_part = float(value[:-1])  # 尝试转换为浮点数
                value = f"{int(numeric_part * 10000)}"
            except ValueError:
                # 如果转换失败，保持原样
                pass
        dict_entries.update({key: value})
    return dict_entries




if __name__=='__main__':
    # keyword = f'个人客户：年龄为17，认购100w'
    # get_user_info(keyword)

    keyword = f'国籍为空'
    print(formatter(keyword))

    keyword = f"个人客户：国家为中国；基金交易：交易金额为500万，业务逻辑为认购"
    keyword = f"个人客户：客户姓名为 William C. McKinnon，证件号码为空，国家为美国；"
    get_user_info(keyword)

